/*
 * Default.h
 *
 *  Created on: Dec 24, 2014
 *      Author: Phong
 */

#ifndef DEFAULT_H_
#define DEFAULT_H_

//#define __DOUBLE__

#include <string>
#include <unordered_set>
using namespace std;

#ifdef __DOUBLE__
	typedef double real;
#else
	typedef float real;
#endif

// for capitalization
#define ALL_LOWER 0
#define ALL_UPPER 1
#define FIRST_UPPER 2
#define NOT_FIRST_UPPER 3
#define N_CAP_FEAT 4

// for standardization (Dictionary)
#define TEMPLATE_NONE 0
#define TEMPLATE_COLLOBERT 1
#define TEMPLATE_GLOVE 2
#define TEMPLATE_GLOVE_BIG 3

extern int dim;
extern int completeInside;

// for training
extern real lambda;
extern real lambdaL;
extern real largeRandRange;
extern real smallRandRange;

extern real paramLearningRate;
extern real learningRateDecay;
extern real wembLearningRate;

extern int maxNEpoch;
extern int batchSize;
extern int nTop;
extern int evalDevStep;
extern int maxDecreaseCount; 

extern int nThreads;

static unordered_set<string> puncList( {
    "-", "--", ",", ";", ":", "!", "?", ".", "...", "'",
    "''", "(", ")", "{", "}", "*", "&", "#", "%" });
extern bool countPunc;

// for kbest
extern string kbestScoreSuffix;

// generation direction
#define CMPL_NONE 1
#define CMPL_LEFT2RIGHT 2
#define CMPL_RIGHT2LEFT 3

// paths
extern string dataDir;
extern string dicDir;
extern string wembSource;
extern string modelDir;

extern string trainFile;
extern string devFile;
extern string kbestDevFile;
extern string testFile;
extern string kbestTestFile;




#endif /* DEFAULT_H_ */
